<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>03自定义指令总结</title>
  <script src="../js/vue.js"></script>
</head>
<body>
  <div id="app">
    <h1>{{title}}</h1>
    <h3 v-big="count"></h3>
    <input type="text" v-fbind="count">
    <button @click="count++">click</button>
  </div>
  <script>
    /* 
      自定义指令
        1 定义一个v-big指令，其功能与v-text类似但需要将绑定的值放大10倍后插入节点
        2 定义一个v-fbind指令，其功能与v-bind类似但需要实现其在绑定input框的同时自动获取焦点
    */

    // 全局自定义指令
    Vue.directive('fbind', {
      bind(element, binding) {
        element.value = binding.value
      },
      inserted(element) {
        element.focus()
      },
      update(element, binding) {
        element.value = binding.value
        element.focus()
      }
    })
    Vue.directive('big', function(element, binding) {
      // console.log(this)
      element.innerText = binding.value * 10
    })
    new Vue({
      el: '#app',
      data() {
        return {
          title: '自定义指令总结',
          count: 1
        }
      }
      /* 
        注意：
          1 自定义指令中，所有钩子函数中的this都不是指向vm
          2 复杂的指令在命名时需要采用短横线的方式，例如'big-number'，而不能是bigNumber形式。
      */
    })
  </script>
</body>
</html>